ac22a507da875d8ea0a29b4ff22af92186ae37a0,platform/core-api/src/com/intellij/psi/util/CachedValuesManager.java,CachedValuesManager,getCachedValue,#PsiElement#CachedValueProvider#,123
Before Change
*/
public static <T> T getCachedValue(@NotNull PsiElement psi, @NotNull CachedValueProvider<T> provider) {
CachedValuesManager manager = getManager(psi.getProject());
return manager.getCachedValue(psi, manager.<T>getKeyForClass(provider.getClass()), provider, false);
}
private final ConcurrentMap<String, Key<CachedValue>> keyForProvider = ContainerUtil.newConcurrentMap();
After Change
*/
public static <T> T getCachedValue(@NotNull final PsiElement psi, @NotNull final CachedValueProvider<T> provider) {
CachedValuesManager manager = getManager(psi.getProject());
return manager.getCachedValue(psi, manager.<T>getKeyForClass(provider.getClass()), new CachedValueProvider<T>() {
@Nullable
@Override
public Result<T> compute() {
Result<T> result = provider.compute();
if (result != null && !psi.isPhysical()) {
return Result.create(result.getValue(), ArrayUtil.append(result.getDependencyItems(), psi));
}
return result;
}
}, false);
}
private final ConcurrentMap<String, Key<CachedValue>> keyForProvider = ContainerUtil.newConcurrentMap();